package com.abc.robot01

import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat

class MainActivity : AppCompatActivity() {
    var  num:Long = 2;
    private fun requestStoragePermission() {
        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(
                this,
                arrayOf(
                    android.Manifest.permission.READ_EXTERNAL_STORAGE,
                    android.Manifest.permission.WRITE_EXTERNAL_STORAGE
                ),
                0
            )
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        requestStoragePermission()
        setContentView(R.layout.activity_main2)
        // 调用 native 方法并显示结果
//        findViewById<TextView>(R.id.sample_text).text =  (getOptionalValue())
//        findViewById<TextView>(R.id.sample_text).text =  (getValueFromMap())
//        findViewById<TextView>(R.id.sample_text).text =  (vector01())
        findViewById<Button>(R.id.button9).setOnClickListener {
//            usePipe()
            libevent02().also {
                Log.e(TAG,"ndk:"+it);
                findViewById<TextView>(R.id.sample_text).text = it
            }
//            findViewById<TextView>(R.id.sample_text).text =  (ostringstream01())
        }
    }

    // 声明 native 方法
    external fun stringFromJNI(): String

    // 声明 native 方法
    external fun bind(): String

    // 声明 native 方法
    external fun getOptionalValue(): String

    // 声明 native 方法
    external fun getValueFromMap(): String

    // 声明 native 方法
    external fun vector01(): String

    // 声明 native 方法
    external fun ostringstream01(): String

    // 声明一个本地方法，用于调用 Java 方法
    external fun callJavaMethod()

    // 声明一个本地方法，用于调用 Java 方法
    external fun thread01()

    // 声明一个本地方法，用于调用 Java 方法
    external fun usePipe()

    // 声明一个本地方法，用于调用 Java 方法
    external fun writeFile()

    // 声明一个本地方法，用于调用 Java 方法
    external fun writeFile2():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun png01():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun png02():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun read()

    // 声明一个本地方法，用于调用 Java 方法
    external fun read2():Long

    // 声明一个本地方法，用于调用 Java 方法
    external fun SetLongField()

    // 声明一个本地方法，用于调用 Java 方法
    external fun gettimeofday():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun hello():Boolean

    // 声明一个本地方法，用于调用 Java 方法
    external fun hello1():Int

    // 声明一个本地方法，用于调用 Java 方法
    external fun hello3():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun hello4():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun timer01():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun hello5():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun libevent01():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun libevent02():String

    // 声明一个本地方法，用于调用 Java 方法
    external fun inotify01():Int

    // 这个方法将在 NDK 中调用
    fun javaMethodToCall() {
        Log.e(TAG,"Java method called from NDK!")
    }

    companion object {
        val TAG = "LoginActivity"
        init {
            System.loadLibrary("mylib")
        }
    }
}
